package mysql8学习.高级.第15章_锁;

/**
 * ④元数据锁(MDL锁)
 * MySQL5.5引入了meta data lock,简称MDL锁,属于表锁范畴。
 * MDL 的作用是，保证读写的正确性。
 * 比如，如果一个查询正在遍历一个表中的数据，
 * 而执行期间另一个线程对这个表结构做变更，增加了一列，
 * 那么查询线程拿到的结果跟表结构对不上，肯定是不行的。
 *
 * 因此，当对一个表做增删改查操作的时候，加MDL读锁;
 * 当要对表做结构变更操作的时候，加MDL写锁。
 * 读锁之间不互斥，因此你可以有多个线程同时对一张表增删改查。
 * 读写锁之间、写锁之间是互斥的，用来保证变更表结构操作的安全性，
 * 解决了DML和DDL操作之间的一致性问题。
 * 不需要显式使用,在访问一个表的时候会被自动加上。
 *
 * 缺点：当某一个事务加了MDL读锁时 来了一个MDL写锁 ，MDL写锁会堵塞
 *     但是如果再来一个MDL读锁 按理说可以和第一个MDL读锁共享，但是不能，
 *     因为有事务申请了MDL写锁。已经互斥了
 *
 *
 */
public class C_B1_4_元数据锁 {
}
